<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------

//加载默认可变配置
require_once(__DIR__ . '/defaults.php');

// 应用公共文件
/**
 * 获取ip
 */
function get_client_ip(){
    return isset($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
}

/**
 * ip转bin
 * @param string $ip - IP地址
 * @return string 二进制IP地址
 */
function ipToBin($ip){
    return inet_pton($ip);
}

/**
 * bin转明文ip
 * @param string $bin - 二进制IP地址
 * @return string 明文IP地址
 */
function binToIp($bin){
    return inet_ntop($bin);
}

/**
 * 删除文件夹
 * @param string $path - 路径
 * @return void
 */
function deldir($path){
    if (is_dir($path)) {
        $files = scandir($path);
        foreach($files as $file){
            if($file === '.' || $file === '..') continue;
            if(is_file($file)){
                @unlink($file);
            } elseif(is_dir($file)){
                deldir($file);
            }
        }
        @rmdir($path);
    } else {
        @unlink($path);
    }
}

/**
 * 生成随机字符串
 * @param int $length 生成随机字符串的长度
 * @param string $char 组成随机字符串的字符串
 * @return string $string 生成的随机字符串
 */
function rand_str($length = 32, $char = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ./=') {
    if(!is_int($length) || $length < 0) {
        return false;
    }

    $string = '';
    for($i = $length; $i > 0; $i--) {
        $string .= $char[mt_rand(0, strlen($char) - 1)];
    }

    return $string;
}

/**
 * 生成随机16进制字符串
 * @param integer $length 长度
 * @return string 随机字符串
 */
function rand_hex($length = 8){
    return rand_str($length, '0123456789abcdef');
}

/**
 * int转二进制
 * @param int $number
 * @return string
 */
function int2bin($number){
    return pack('i', $number);;
}

/**
 * 二进制转int
 * @param string $bin
 * @return int
 */
function bin2int($bin){
    $data = unpack('i', $bin);
    if(isset($data[1])) return $data[1];
    else throw new \Exception();
}

/**
 * 获取mysql格式的当前时间
 */
function mysql_current_datetime(){
    return date('Y-m-d H:i:s');
}

/* 转载自https://blog.csdn.net/qq_33858250/java/article/details/89419869 */
function base64_encode_url($input){
    return str_replace('=', '', strtr(base64_encode($input), '+/', '-_'));
}

function base64_decode_url($input){
    $remainder = strlen($input) % 4;
    if ($remainder) {
        $addlen = 4 - $remainder;
        $input .= str_repeat('=', $addlen);
    }
    return base64_decode(strtr($input, '-_', '+/'));
}